From 27d254c62e959f0d481c2385a111a891e79a5cce Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Tue, 20 Mar 2007 09:35:42 +0000 Subject: [PATCH] (basic-save-buffer): Do not set visited filename when the corresponding directory does not exist or the specified filename is that of an existing directory. --- lisp/files.el | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index 50180dc6ebf..d0a89ec65b5 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3595,10 +3595,21 @@ Before and after saving the buffer, this function runs (let ((filename (expand-file-name (read-file-name "File to save in: ") nil))) - (and (file-exists-p filename) - (or (y-or-n-p (format "File `%s' exists; overwrite? " - filename)) - (error "Canceled"))) + (if (file-exists-p filename) + (if (file-directory-p filename) + ;; Signal an error if the user specified the name of an + ;; existing directory. + (error "%s is a directory" filename) + (unless (y-or-n-p (format "File `%s' exists; overwrite? " + filename)) + (error "Canceled"))) + ;; Signal an error if the specified name refers to a + ;; non-existing directory. + (let ((dir (file-name-directory filename))) + (unless (file-directory-p dir) + (if (file-exists-p dir) + (error "%s is not a directory" dir) + (error "%s: no such directory" dir))))) (set-visited-file-name filename))) (or (verify-visited-file-modtime (current-buffer)) (not (file-exists-p buffer-file-name)) -- 2.30.2